package br.com.sgi.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.sgi.autentication.UsuarioLogado;
import br.com.sgi.dao.FuncaoDao;
import br.com.sgi.model.Funcao;
import br.com.sgi.service.FuncaoService;

@Service("funcaoService")
public class FuncaoServiceImpl implements FuncaoService {
	
	@Autowired
	private FuncaoDao  funcaoDao;

	@Override
	public List<Funcao> findAll() {
		return funcaoDao.findAll();
	}

	@Override
	public List<Funcao> buscarTodasFuncoes() {
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
		 params.put("coIgreja", UsuarioLogado.getCoIgrejas());
		return funcaoDao.findByNamedParams("buscarTodasFuncoes", params);
		
	}

	@Override
	public void atualizar(Funcao funcao) {
		funcaoDao.update(funcao);
		
	}

	@Override
	public void excluir(Long coFuncao) {
		funcaoDao.deleteById(coFuncao);
		
	}

	@Override
	public void salvar(Funcao funcao) {
		funcaoDao.save(funcao);
		
	}

	@Override
	public List<Funcao> buscarFuncaoPorFiltros(String nome) {
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
			
		 StringBuilder sql =  new StringBuilder();
		
		sql.append(" FROM Funcao f ");
		sql.append(" WHERE f.sistema.coSeqSistema = " + UsuarioLogado.getCoSistema());
		if(!UsuarioLogado.isAdminGeral())
			sql.append(" and f.coSeqIgreja in ( " + UsuarioLogado.getCoIgrejas() +" )");
			
			if(nome != null && !nome.isEmpty()){
				sql.append(" and f.nome like :nome ");
				params.put("nome","%" + nome + "%");
			}
		return funcaoDao.findByNativeQuery(sql.toString(), params);
	}

}
